function makeTable(xmlForm,tableId){
	this.xmlForm=xmlForm;
	this.table=$C('table',{'class':'formTable'});
	this.tableId=tableId;
	this.xmlData=xmlForm.getElementsByTagName('sheet')[0];
	this.define=this.xmlData.getElementsByTagName('define')[0].getElementsByTagName('tr');
	this.rows=this.xmlData.getElementsByTagName('row');
	this.tdArray=new Array();
	this.cols=0;//记录单元格跨度
	this.relations={};//公式之间的联动关系
	this.vars={};//公式所涉及的变量
	TABLES[tableId]=this;
	this.formulas={};
	this.cell={};
	this.dirtyCell=new Array();//值发生改变的单元格
	this.canEdit=false;
}
makeTable.prototype={
	fix:{'class':'className','colspan':'colSpan','rowspan':'rowSpan'},
	init:function(){
		this.canEdit=canEdit();
		this.table.appendChild($C('caption',{},this.xmlData.getAttribute('caption')));
		this.table.appendChild(this.makeHead());
		this.table.appendChild(this.makeTbody());
		return this.table;
	},
	makeHead:function(){
		var trxml=this.xmlData.getElementsByTagName('thead')[0].getElementsByTagName('tr');
		var thead=$C('thead',{});
		var tmpTh,tmpTr;
		tmpTr=$C('tr',{'class':'colno'},$C('th',{'width':'3%','class':'noprint'}));
		var l=this.define.length,lj=trxml.length,lk;
		for(var i=0;i<l;i++){
			tmpTh=this.define[i];
			tmpTr.appendChild($C('th',{'width':tmpTh.getAttribute('width')},tmpTh.getAttribute('rowno')));
		}
		thead.appendChild(tmpTr);
		for(var j=0;j<lj;j++){
			var tr=$C('tr',{},$C('th',{'width':'3%','class':'noprint'}));
			var thObj=trxml[j].getElementsByTagName('th');
			lk=thObj.length;
			for(var k=0;k<lk;k++){
				var attr=thObj[k].attributes;
				var th=$C('th',{},thObj[k].firstChild.data);
				for(m=0;m<attr.length;m++){
					th[this.fix[attr[m].name]||attr[m].name]=attr[m].value;
				}
				tr.appendChild(th);
			}
			thead.appendChild(tr);
		}
		return thead;
	},
	makeTbody:function(){
		this.makeTdArray();
		var tmpData,tbody=$C('tbody',{}),l=this.rows.length,lj;
		for(var i=0;i<l;i++){
			lj=this.define.length;
			var trObj=$C('tr',{},$C('td',{'class':'rowno noprint'},(i+1)+''));
			for(var j=0;j<lj;j++){
				rowno=this.define[j].getAttribute('rowno');
				if(0!=this.cols){
					this.cols--;
					continue;
				}
				tmpData=this.rows[i].getElementsByTagName(rowno);
				var tmpTd=this.tdArray[j].cloneNode(this.tdArray[j]);
				eve.observe(tmpTd,'click',this.clickCell.bind(this));
				this.setCellNo(rowno+(i+1),tmpTd);//Just for Ie.I don't know why.
				if(0==tmpData.length){
					trObj.appendChild(tmpTd);
					continue;
				}else
					trObj.appendChild(this.makeTd(tmpData[0],tmpTd,rowno+(i+1)));
				tbody.appendChild(trObj);
			}
				
		}
		return tbody;
	},
	setCellNo:function(cellNo,obj){
		this.relations[cellNo]=[];
		this.cell[cellNo]=obj;
		obj.cellNo=cellNo;
		obj.cellValue=0;//初使化所有单元格的值为0
		obj.editType=0;//默认不可编辑
	},
	getAtt:function(nodeData,attr,aName){
		return (true==(browser.ie)?hasAttribute(attr,aName):nodeData.hasAttribute(aName))?nodeData.getAttribute(aName):0;
	},
	makeTd:function(nodeData,tdObj,cellNo){
		var attr=nodeData.attributes,l=attr.length;
		for(var i=0;i<l;i++){
			var tmpAtt=attr[i].value;
			var attName=attr[i].name;
			switch(attName){
				case 'value':
					tdObj.innerHTML=tmpAtt.replace(/ /g,'&nbsp;');
					tdObj.cellValue=tmpAtt;
					break;
				case 'colspan':
					tdObj.colSpan=tmpAtt;
					this.cols+=parseInt(tmpAtt)-1;
					break;
				case 'formula':
					tdObj.cellValue=this.getAtt(nodeData,attr,'value');
					//tdObj.cellType=1;//1:formula
					this.vars[cellNo]=[];//计算时所涉及的变量
					this.formulas[cellNo]=tmpAtt;
					break;
				case 'math'://公式解析
					tdObj.mathExp=tmpAtt;
					tdObj.datatype=3;//datatype=3表示是单位类型
					tdObj.innerHTML=(new translateExpression(tmpAtt)).init();
					break;
				case 'edit'://1 text 2 list
					if(false==this.canEdit)	break;
					tdObj.cellValue=this.getAtt(nodeData,attr,'value');
					//tdObj.dataType=this.getAtt(nodeData,attr,'datatype')||2;//1.数字 2.文本 3.公式
					addClass(tdObj,'canEdit');
					tdObj.editType=tmpAtt;
					break;
				case 'addcol'://单元格跨度
					this.cols+=parseInt(tmpAtt);
					break;
				case 'rowspan':
					tdObj.rowSpan=tmpAtt;
					break;
				case 'class':
					tdObj.className=tmpAtt;
					break;
				case 'list':
					tdObj.list=tmpAtt;
					//tdObj.dataType=this.getAtt(nodeData,attr,'datatype');
					break;
				default:
					tdObj[attName]=tmpAtt;
					break;
			}
		}
		attr=null;
		return tdObj;
	},
	makeTdArray:function(){
		var tmpTh,tmpAtt,l=this.define.length,lj;
		for(var i=0;i<l;i++){
			tmpTh=this.define[i];
			tmpAtt=tmpTh.attributes;
			var tmpTd=$C('td',{});
			lj=tmpAtt.length;
			for(var j=0;j<lj;j++){
				if('width'==tmpAtt[j].name||'rowno'==tmpAtt[j].name)	continue;
				tmpTd[this.fix[tmpAtt[j].name]||tmpAtt[j].name]=tmpAtt[j].value;
			}
			this.tdArray.push(tmpTd);
		}	
	},
	clickCell:function(e){
		if(false==this.canEdit)	return;//如果没有编辑权限，返回
		cell=e.target||e.srcElement;
		if(!cell.cellNo){//如果点击的是单元格的childNode。则找到单元格
			while(!cell.cellNo)
				cell=cell.parentNode;
		}
		if(true==SYS_STATUS.isEditing)	this.editEnd(SYS_STATUS.selectCell);//10月29日打的补丁,修补了鼠标快速点击单元格编辑内容时出错的问题
		if(cell.editType>0)//{
			this.selectCell(cell);
		//}
		else
			if(false==SYS_STATUS.isEditing&&'show'==SYS_STATUS.editPanel.className)	closeEditPanel();
	},
 	selectCell:function(cell){
		//debug(cell.cellNo);
		//if(cell==SYS_STATUS.selectCell)
		SYS_STATUS.selectCell=cell;
		SYS_STATUS.editPanel.innerHTML=cell.innerHTML;
		if(2==cell.editType){
			var listicon=$C('img',{'src':'images/listicon.gif','id':'listicon'});
			SYS_STATUS.editPanel.appendChild(listicon);
			eve.observe(listicon,'click',this.editCell.bind(this));
		}
		this.setEditPanel(getPosition(cell),getSize(cell));
	},
	makeSelect:function(listStr,intValue){
		var opt=listStr.split('|'),tmpOpt;
		var selectObj=$C('select',{});
		for(var i=0;i<opt.length;i++){
			selectObj.appendChild(newOption(opt[i],opt[i],intValue==opt[i]));
		}
		return selectObj;
	},
	makeTextarea:function(initValue){
		var w=SYS_STATUS.editPanel.style.width;
		var h=SYS_STATUS.editPanel.style.height;
		var t=$C('textarea',{});
		t.value=initValue.replace(/<br(\/)?>/gi,'\r\n').replace(/\&nbsp;/gi,' ');
		t.style.width=parseInt(w)+'px';
		SYS_STATUS.editPanel.style.height=t.style.height=parseInt(h)+15+'px';
		//cleanContent(SYS_STATUS.editPanel);
		//SYS_STATUS.editPanel.appendChild(t);
		SYS_STATUS.isTextarea=true;
		return t;
	},
	enterTextarea:function(){
		t=SYS_STATUS.editPanel.firstChild;
		SYS_STATUS.editPanel.style.height=parseInt(SYS_STATUS.editPanel.style.height)+15+'px';
		t.style.height=parseInt(t.style.height)+15+'px';
	//	if(browser.ie)	t.value+='\r\n';
	//	else
			t.value+='\n';
		
	},
	editCell:function(initValue){
		var cell=SYS_STATUS.selectCell,inputObj;
		//debug(cell.cellNo);
		if(true==SYS_STATUS.isEditing)	return;
		SYS_STATUS.isEditing=true;
		cleanContent(SYS_STATUS.editPanel);
		if(2==cell.editType){
			inputObj=this.makeSelect(cell.list,cell.cellValue);
			inputObj.style.width=parseInt(SYS_STATUS.editPanel.style.width)+7+'px';//+7目的是填满整个单元格
		}/*
		if(4==cell.editType){
			inputObj=this.makeTextarea(cell.cellValue);
		}*/
		else if(/<br(\/)?>/i.test(initValue)){
			inputObj=this.makeTextarea(initValue);
		}			
		else{
			inputObj=$C('input',{'type':'text'});
			if(3==cell.datatype)//单位表达式
				inputObj.value=cell.mathExp||'';
			else
				inputObj.value=initValue.replace(/\&nbsp;/gi,'');
		}
		SYS_STATUS.editPanel.appendChild(inputObj);
//		if(2==cell.editType)	inputObj.style.width=parseInt(SYS_STATUS.editPanel.style.width)+7+'px';
		inputObj.focus();
		eve.observe(inputObj,'blur',this.editEnd.bind(this));
	},
	editEnd:function(){
		if(false==SYS_STATUS.isEditing)	return;
		SYS_STATUS.isEditing=false;
		var cell=SYS_STATUS.selectCell,dType;
		var oldValue=cell.innerHTML,newValue;
		//try{
			newValue=SYS_STATUS.editPanel.firstChild.value;
		//}catch(e){
		//	newValue=0;
		//}
		//alert(SYS_STATUS.editPanel.firstChild.value);
		if(newValue=='')	newValue=0;//如果为空则为0,不然计算时会出现NaN.
		cleanContent(SYS_STATUS.editPanel);
		SYS_STATUS.editPanel.className='hide';
		//SYS_STATUS.selectCell=false;
		SYS_STATUS.isDblClick=false;
		SYS_STATUS.isTextarea=false;
		if(/excep/.test(cell.className))	removeClass(cell,'excep');//取消异常
		dType=cell.datatype;
		if(1==dType){
			if(0!=newValue){
				newValue=newValue.trim();
				if(false==newValue.isNum()){//如果不是数字则报出错
					cell.innerHTML=newValue;
					addClass(cell,'excep');
					showStatus(cell.cellNo+'单元格只能输入数字');
					return;
				}
			}
		}
		if(3==dType){
			cell.mathExp=newValue;//把公式记录下来。
			newValue=(new translateExpression(newValue)).init();//如果是上下标表达示,则解析表达示
		}
		if(newValue!='')	newValue=newValue.replace(/\n/gi,'<br/>').replace(/\s/gi,'&nbsp;');
		if(oldValue==newValue)	return;
		cell.innerHTML=newValue;
		cell.cellValue=newValue;
		this.dirtyCell.singlePush(cell.cellNo);
		addClass(cell,'green');
		this.reCalculate(cell.cellNo);
	},
	reCalculate:function(cellNo){
		var sequence=(new parseFormula()).init('$'+this.tableId+'_'+cellNo);
		var l=sequence.length;
		for(var i=0;i<l;i++){
			(new calculate(sequence[i])).init();
		}
	},
	setEditPanel:function(position,size){
		var a,b;//因为Ie 和 Firefox存在差异
		if(browser.ie){
			a=0;b=-2;
		}else{
			a=-1;b=-2;
		}
		SYS_STATUS.editPanel.className='show';
		SYS_STATUS.editPanel.style.top=position[0]+a+'px';
		SYS_STATUS.editPanel.style.left=position[1]+a+'px';
		SYS_STATUS.editPanel.style.width=size[0]+b-5+'px';//-5是因为css定义了padding-left:5px;
		SYS_STATUS.editPanel.style.height=size[1]+b-1+'px';//-1是因为css定义了padding-top:1px;
	},
	goToCell:function(destination){//1:up 2:right 3:down 4:left
		//debug("d"+destination);
		var tmpCell;
		if(true==SYS_STATUS.isEditing)	this.editEnd();
		if(1==destination)
			tmpCell=this.findNextTrCell(SYS_STATUS.selectCell,SYS_STATUS.selectCell.cellNo.substring(0,1),0);//0:previoussibling 1:nextSibling SYS_STATUS.selectCell.cellNo.substring(0,1):是列号
		else if(2==destination)
			tmpCell=this.findNextCell(SYS_STATUS.selectCell,1);
		else if(3==destination)
			tmpCell=this.findNextTrCell(SYS_STATUS.selectCell,SYS_STATUS.selectCell.cellNo.substring(0,1),1);
		else if(4==destination)
			tmpCell=this.findNextCell(SYS_STATUS.selectCell,0);
		if(false==tmpCell)	return;
		this.selectCell(tmpCell);
	},
	findNextTrCell:function(cell,colNo,upOrDown){
		var tmpTr=(1==upOrDown)?cell.parentNode.nextSibling:cell.parentNode.previousSibling;
		if(tmpTr==null)	return false;
		var tmpTd=this.findTd(tmpTr,colNo);
		if(tmpTd.editType>0)	return tmpTd;
		return this.findNextTrCell(tmpTd,colNo,upOrDown);
		return false;
	},
	findNextCell:function(cell,leftOrRight){
		var obj=(1==leftOrRight)?cell.nextSibling:cell.previousSibling;
		if(!obj)	return false;
		if(obj.editType>0)	return obj;
		return this.findNextCell(obj,leftOrRight);
	},
	findTd:function(trObj,colNo){
		var tds=trObj.getElementsByTagName('td');
		var l=tds.length,tmpColNo,tmpTd,isFound=false;
		for(var i=1;i<l;i++){
			tmpTd=tds[i];
			tmpColNo=tmpTd.cellNo.substring(0,1);
			if(colNo==tmpColNo)	return tmpTd;
		}
		if(false==isFound)
			return this.findTd(trObj,String.fromCharCode(colNo.charCodeAt(0)-1));//因为每一行的单元格数量不一样。
	},
	isDirty:function(){
		return this.dirtyCell.length>0;
	}
};
function editTable(xmlForm,tableId){
	this.xmlForm=xmlForm;
	this.table=$C('table',{'class':'formTable'});
	this.tableId=tableId;
	this.xmlData=xmlForm.getElementsByTagName('sheet')[0];
	this.tdArray=new Array();
	this.define=this.xmlData.getElementsByTagName('define')[0].getElementsByTagName('tr');
	TABLES[tableId]=this;
	this.rows=this.xmlData.getElementsByTagName('row');
	this.cols=0;//记录单元格跨度
	this.cell={};//所有单元格
	this.dirtyCell=[];
	this.dirtyFormula=[];//发生改变的单元格
	this.canEdit=false;
	this.infoBar=$('infoBar');
};
Object.extend(Object.extend(editTable.prototype,makeTable.prototype),{
	//cellTypes:{input:1,formula:2,math:3,list:4},
 	cellTypes:{'text':'文本','formula':'公式','math':'单位','list':'下拉框'},
	clickCell:function(e){
		var cell=e.target||e.srcElement;
		//for(var p in cell.bookAttr)	debug(p);
		if(!cell.cellNo){//如果点击的是单元格的childNode。则找到单元格
			while(!cell.cellNo)
			cell=cell.parentNode;
		}
		if(cell==SYS_STATUS.selectCell)	return;//已经是选中的
		//debug(SYS_STATUS.isEditing);
		if(false!=SYS_STATUS.isEditing)
			if(false==this.editEnd())	return;//如果上一次编辑出错
		SYS_STATUS.selectCell=cell;
		this.editCell(cell);
	},
	setCellNo:function(cellNo,obj){
		this.cell[cellNo]=obj;
		obj.cellNo=cellNo;
		obj.initValue='';//初使化所有单元格的值为空
		obj.editType=0;//默认不可编辑
		obj.cellType='text';//默认是text
		
	},
	makeTd:function(nodeData,tdObj,cellNo){
		var attr=nodeData.attributes,l=attr.length;
		for(var i=0;i<l;i++){
			var tmpAtt=attr[i].value;
			var attName=attr[i].name;
			switch(attName){
				case 'value':
					tdObj.initValue=tmpAtt;
					tdObj.innerHTML=tmpAtt.replace(/ /g,'&nbsp;');
					break;
				case 'formula':
					tdObj.initValue=tmpAtt;
					tdObj.formula=tmpAtt;
					tdObj.cellType='formula';
					addClass(tdObj,'formulaTd');
					break;
				case 'colspan':
					tdObj.colSpan=tmpAtt;
					this.cols+=parseInt(tmpAtt)-1;
					break;
				case 'math'://公式解析
					//tdObj.math=
					tdObj.cellType='math';
					tdObj.initValue=tmpAtt;
					tdObj.innerHTML=(new translateExpression(tmpAtt)).init();
					break;
				case 'edit'://1 text 2 list
					//if(false==this.canEdit)	break;
					//tdObj.cellValue=this.getAtt(nodeData,attr,'value');
					addClass(tdObj,'canEdit');
					tdObj.editType=tmpAtt;
//					tdObj.editType=tmpAtt;
					break;
				case 'addcol'://单元格跨度
					this.cols+=parseInt(tmpAtt);
					break;
				case 'rowspan':
					tdObj.rowSpan=tmpAtt;
					break;
				case 'class':
					tdObj.className=tmpAtt;
					break;
				case 'list':
					tdObj.cellType='list';
					tdObj.initValue=tmpAtt;
					//addClass(tdObj,'listTd');
					tdObj.appendChild(this.makeSelect(tmpAtt,''));
					break;
			}
		}
		return tdObj;
	},
	editCell:function(){
		SYS_STATUS.isEditing=true;
		SYS_STATUS.isDblClick=true;
		this.makeForm();
	},
	editEnd:function(){
		var cell=SYS_STATUS.selectCell;
		var isDirty=false;//是否已经改变
		var isEdit=$('isEdit').checked;
		var cellType=$('cellType').value;
		var initValue=$('initValue').value;
		if(this.isFormula(cell))	initValue=(new shiftFormula()).tranFor(initValue);
		//debug(initValue);
		//debug(cell.initValue);
		if(initValue!=cell.initValue||cellType!=cell.cellType){
			isDirty=true;
			if(false==this.reShowCell(cell,cellType,initValue))	return false;//出错了
			cell.cellType=cellType;
			cell.initValue=initValue;
		}
		//debug(isError);
		//if(cell.editType!)
		if(0==cell.editType){
			if($('isEdit').checked){
				addClass(cell,'canEdit');
				isDirty=true;
				cell.editType=1;
			}
		}else{
			if(false==$('isEdit').checked){
				removeClass(cell,'canEdit');
				isDirty=true;
				cell.editType=0;
			}
		}
		if(true==isDirty){
			//debug(1);
			this.dirtyFormula.singlePush(cell.cellNo);
			//cell.style.background='yellow';
			//addClass(cell,'dirty');
		}//记录已经更改
		cleanContent(this.infoBar);
		SYS_STATUS.isEditing=false;
		SYS_STATUS.isDblClick=false;
		SYS_STATUS.selectCell=false;
		return true;
	},
	isFormula:function(cell){
		return 'formula'==cell.cellType;
	},
 	reShowCell:function(cell,cellType,initValue){
		switch(cellType){
			case 'math':
				cleanContent(cell);
				cell.innerHTML=(new translateExpression(initValue)).init();
				break;
			case 'list':
				if(false==isListRight(initValue)){
					alert('下拉菜单选项出错');
					return false;
				}
				cleanContent(cell);
				cell.appendChild(this.makeSelect(initValue,''));
				break;
			case 'formula':
				if(true==isFormulaRight(this.tableId,'$'+this.tableId+'_'+cell.cellNo,initValue)){
					addClass(cell,'formulaTd');
					cell.innerHTML='';
				}else{
					return false;
				}
				break;
			default:
				cell.innerHTML=initValue;
				break;
		}
		return true;
	},
	makeForm:function(){
		cell=SYS_STATUS.selectCell;
		var isEditBox=$C('input',{'type':'checkbox','id':'isEdit'});
		var editType=$C('select',{'id':'cellType'});
		//debug(cell.cellType);
		for(var t in this.cellTypes)	editType.appendChild(newOption(this.cellTypes[t],t,t==cell.cellType));
		this.infoBar.appendChild($C('span',{},'编号:<span class="red">$'+this.tableId+'_'+cell.cellNo+'</span> 可编辑:',isEditBox,$C('span',{},' 类型:',editType)));
		if(cell.editType)	isEditBox.checked=true;
		var editInp=$C('input',{'type':'text','id':'initValue'});
		if(this.isFormula(cell)){
			editInp.value=(new shiftFormula().disFor(cell.initValue));
		}else{
			editInp.value=cell.initValue;	
		}
		editInp.style.width=this.infoBar.offsetWidth-this.infoBar.firstChild.offsetWidth-20+'px';
		this.infoBar.appendChild($C('span',{},editInp));
	},
	isDirtyTemplate:function(){
		return this.dirtyFormula.length>0;
	}
});
function isListRight(str){//检查下拉菜单是否valid
	if(0==str.length)	return false;//空字符串
	var arr=str.split('|');
	var l=arr.length;
	if(1==l)	return false;//只有一项
	for(var i=0;i<l;i++){
		if(0==arr[i].length)	return false;//如果某一项为空
	}
	return true;
}
function isFormulaRight(tableId,tdNo,formula){//检查公式是否valid
	var result;
	result=isSyntaxValid(formula);
	if(1!=result){
		alert('公式出错:括号不匹配');
		return false;
	}else{
		result=isEndlessLoop(tableId,tdNo,formula);
		if(1!=result){
			if(3==result)	alert('公式出错:单元格之前循环引用');
			if(4==result)	alert('你引用了一个不存在的单元格');		
			return false;
		}
	}
	return	true;
}
function isEndlessLoop(tableId,tdNo,formula){//是否循环引用
	//debug(formula+'<br>');
	formula=treatSum(formula);
	formula=formula.replace(/((\$[^_]+_)?[A-Z]\d+)+/g,'[$1]');//把公式中所涉及的变量用[]括起来,方便分析
	formula=formula.replace(/\[([A-Z]+\d+)\]/g,'[$'+tableId+'_$1]');//把公式中没有表单号的变量加上表单号.如F1变成$basic_F1
	var arrFormula=formula.split(''),tmpC,isCellNo=false,vars=[],tmpCell,cellNo='',tmpResult;
	l=arrFormula.length;
	for(var i=0;i<l;i++){
		tmpC=arrFormula[i];
		if('['==tmpC){
			isCellNo=true;
			continue;
		}
		if(']'==tmpC){
			if(-1==vars.isIn(cellNo)){//该变量前面是否已经出现过
				//debug(cellNo+'<br>');
				vars.push(cellNo);//如果没有加到变量数组
				if(cellNo==tdNo)	return 3;//表示循环引用了。
			}
			isCellNo=false;
			cellNo='';
		}
		if(true==isCellNo)
		cellNo+=tmpC;
	}
	//debug(vars.length);
	for (var j=0;j<vars.length;j++){		
		tmpCell=getCell(vars[j]);
		if(!tmpCell)	return 4;//没有这个单元格
		if('formula'!=tmpCell.cellType)	continue;
		tmpResult=isEndlessLoop(getCellName(vars[j])[0],tdNo,tmpCell.initValue);
		if(1!=tmpResult)	return tmpResult;
	}
	return 1;
}
function isSyntaxValid(formula){//检查语法,目前只检查括号配对
	var brackes=0;
	arrFormula=formula.split('');
	for(var i=0;i<arrFormula.length;i++){
		if(brackes<0)	return 2;
		switch(arrFormula[i]){
			case '(':
				brackes++;
				break;
			case ')':
				brackes--;
				break;
		}
	}
	//debug(brackes);
	if(0!=brackes)	return 2;
	return 1;
}
function shiftFormula(){}
shiftFormula.prototype={
	disFor:function(forStr){//显示公式
		forStr=forStr.replace(/_/g,'!');
		for(var n in SYS_STATUS.tableName){
			forStr=forStr.replace(new RegExp('\\$'+n,'gi'),SYS_STATUS.tableName[n]);
		}
		return '='+forStr;
	},
	tranFor:function(forStr){//转换成系统识别的公式
		forStr=forStr.replace('=','');//先去掉最前面的=号
		forStr=forStr.replace(/!/g,'_');
		for(var t in SYS_STATUS.tableName){
			forStr=forStr.replace(new RegExp(SYS_STATUS.tableName[t],'g'),'$'+t);
		}
		return forStr;
	}
}
